home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Day Cry
/
Day Cry CD.bin
/
oh_towns
/
taropyon
/
he386
/
ccisrc
/
sc55disp.c
< prev
next >
Wrap
Text File
|
1994-09-20
|
6KB
|
219 lines
/*************************************************************************
*
*************************************************************************/
char *Sc55dispFuncTbl[8] =
{
"exSC55_msgSet" ,
"exSC55_dotSet" ,
"SC55_initDotBuffer" ,
"SC55_setDotBuffer" ,
"exSC55_dotBuffer" ,
NULL
};
int SC55disp_macroInit( char *sqr )
{
int i;
for ( i = 0; Sc55dispFuncTbl[i] != NULL; ++i )
MMac_extDefine( sqr, Sc55dispFuncTbl[i], Sc55dispFuncTbl[i], MMAC_ATT_EXT, NULL );
MMac_extDefine( sqr, "_SC55DISP_MACRO_DEFINED", "", MMAC_ATT_NORMAL , NULL );
return (NORMAL);
}
int _isSC55dot(int ch)
{
ch &= 0xFF;
if ( ch == '0' || ch == ' ' )
return (0);
else
return (1);
}
/*************************************************************************
* SC-55 ëtÅ╗âfâBâXâvâîâCé╔ò╢ÄÜé≡ò\Īé╖éΘ
*-------------------------------------------------------------------------
* $exSC55_msgSet("âüâbâZü[âW")
*************************************************************************/
int exSC55_msgSet( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
{
int len, siz;
char *msg;
if ( argc < 1 )
{
_ERR: MM_setErrMsg(sqr,"[SC-55] displayed letter error!");
return(ERR);
}
msg = argv[0];
len = strlen(msg);
if ( len < 1 || len > 32 )
goto _ERR;
return sc55_genMML( sqr, bufSiz, buf, 0x100000, len, msg );
}
/*************************************************************************
* SC-55 ëtÅ╗âfâBâXâvâîâCé╔âhâbâgò\Ī
*-------------------------------------------------------------------------
* $exSC55_dotSet( l0, l1, l2, .. l15);
*************************************************************************/
int exSC55_dotSet( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
{
int i, level;
char *s, dat[128];
unsigned char dot[256];
if ( argc < 16 )
{
_ERR: MM_setErrMsg(sqr,"[SC-55] displayed dot data error!");
return(ERR);
}
for ( level = 0; level < 16; ++level )
{
s = argv[level];
while ( isspace(*s) )
++s;
if ( strlen(s) < 16 )
goto _ERR;
for ( i = 0; i < 16; ++i )
{
dot[(level*16)+i] = _isSC55dot(*s);
++s;
}
}
for ( i = 0; i < 16; ++i )
{
dat[i ] = (dot[i*16+ 0]<<4) + (dot[i*16+ 1]<<3) + (dot[i*16+ 2]<<2) + (dot[i*16+ 3]<<1) + (dot[i*16+ 4]);
dat[i+16] = (dot[i*16+ 5]<<4) + (dot[i*16+ 6]<<3) + (dot[i*16+ 7]<<2) + (dot[i*16+ 8]<<1) + (dot[i*16+ 9]);
dat[i+32] = (dot[i*16+10]<<4) + (dot[i*16+11]<<3) + (dot[i*16+12]<<2) + (dot[i*16+13]<<1) + (dot[i*16+14]);
dat[i+48] = (dot[i*16+15]<<4);
}
return sc55_genMML( sqr, bufSiz, buf, 0x100100, 64, dat );
}
int Sc55dotBufXs = 0;
int Sc55dotBufYs = 0;
unsigned char *Sc55dotBuffer = NULL;
/*************************************************************************
* ÄwÆΦé╠æσé½é│é╠âhâbâgâoâbâtâ@é≡ùpê╙é╖éΘ
*-------------------------------------------------------------------------
* $SC55_initDotBuffer(x,y)
*************************************************************************/
int SC55_initDotBuffer( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
{
int x, y;
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22SC55_initDotBuffer()\x22 parameter error!");
return(ERR);
}
x = atoi(argv[0]);
y = atoi(argv[1]);
if ( x < 16 || y < 16 )
goto _ERR;
Sc55dotBufXs = x;
Sc55dotBufYs = y;
if ( (Sc55dotBuffer = calloc(Sc55dotBufXs*Sc55dotBufYs,1)) == NULL )
goto _ERR;
return (0);
}
/*************************************************************************
* âhâbâgâoâbâtâ@é╠ÄwÆΦê╩Æué╔âhâbâgâfü[â^é≡É▌ÆΦé╖éΘ
*-------------------------------------------------------------------------
* $SC55_setDotBuffer(line,"dat")
*************************************************************************/
int SC55_setDotBuffer( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
{
int x, y;
char *s;
if ( Sc55dotBuffer == NULL || Sc55dotBufXs < 16 || Sc55dotBufYs < 16 )
{
MM_setErrMsg(sqr,"SC-55 dot buffer not initiarize!");
return(ERR);
}
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22SC55_setDotBuffer()\x22 parameter error!");
return(ERR);
}
y = atoi(argv[0]);
s = argv[1];
while ( isspace(*s) )
++s;
if ( *s )
{
for ( x = 0; x < Sc55dotBufXs; ++x )
{
Sc55dotBuffer[y * Sc55dotBufXs + x] = _isSC55dot(*s);
++s;
if ( *s == '\0' )
break;
}
}
return (0);
}
/*************************************************************************
* âhâbâgâoâbâtâ@Æåé╠ÄwÆΦê╩Æué⌐éτ16ü~16âhâbâgò¬é≡ò\Ī
*-------------------------------------------------------------------------
* $exSC55_dotBuffer(x,y)
*************************************************************************/
int exSC55_dotBuffer( char *sqr, size_t bufSiz, char *buf, int argc, char **argv )
{
int y, x0, y0;
char *s, dat[128];
unsigned char dot[256];
if ( Sc55dotBuffer == NULL || Sc55dotBufXs < 16 || Sc55dotBufYs < 16 )
{
MM_setErrMsg(sqr,"SC-55 dot buffer not initiarize!");
return(ERR);
}
if ( argc < 2 )
{
_ERR: MM_setErrMsg(sqr,"\x22exSC55_dotBuffer()\x22 parameter error!");
return(ERR);
}
x0 = atoi(argv[0]);
y0 = atoi(argv[1]);
if ( x0 < 0 || x0 + 15 > Sc55dotBufXs || y0 < 0 || y0 + 15 > Sc55dotBufYs )
goto _ERR;
for ( y = 0; y < 16; ++y, ++y0 )
{
dat[y ] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 0]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 1]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 2]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 3]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 4]);
dat[y+16] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 5]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 6]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 7]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 8]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+ 9]);
dat[y+32] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+10]<<4)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+11]<<3)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+12]<<2)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+13]<<1)
+ (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+14]);
dat[y+48] = (Sc55dotBuffer[(y0*Sc55dotBufXs)+x0+15]<<4);
}
return sc55_genMML( sqr, bufSiz, buf, 0x100100, 64, dat );
}